# 导入必要的系统模块
import sys
import os
# 导入抽象基类和抽象方法相关模块
from abc import ABC, abstractmethod
# 导入类型注解相关模块
from typing import Any, Dict
# 导入FastAPI的路由模块
from fastapi import APIRouter

# 从项目工具模块导入日志记录器
from utils.logger import get_logger

# 将项目根目录添加到Python路径中，确保模块能正确导入
sys.path.append(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))


# 定义基础智能体抽象基类
class BaseAgent(ABC):
    """所有智能体的基类"""

    def __init__(self, name: str):
        # 初始化智能体名称
        self.name = name
        # 为智能体创建专用的日志记录器
        self.logger = get_logger(f"agent.{name}")
        # 创建FastAPI路由，使用智能体名称作为前缀
        self.router = APIRouter(prefix=f"/{name}")
        # 设置默认路由
        self._setup_routes()
        # 记录初始化日志
        self.logger.info(f"Initialized agent: {name}")

    def _setup_routes(self):
        """设置默认路由"""
        # 添加一个获取智能体信息的GET路由
        self.router.get("/info", response_model=Dict[str, Any])(self.info)

    async def info(self) -> Dict[str, Any]:
        """获取智能体信息"""
        # 返回包含智能体基本信息的字典
        return {
            "name": self.name,
            "type": self.__class__.__name__,
            "description": self.__doc__
        }

    @abstractmethod
    async def process(self, input_data: Any) -> Any:
        """
        处理输入数据的核心方法，需要在子类中实现

        Args:
            input_data: 输入数据

        Returns:
            处理结果
        """
        pass
